<?php
/**
 * @APP@
 *
 * PHP versions 5
 *
 * @category   BEAR
 * @package    App
 * @subpackage App_Form
 * @author     $Author: anonymous $ <anonymous@example.com>
 * @version    SVN: Release: $Id:$
 */
/**
 * ユーザーフォーム
 *
 * <pre>
 * ユーザー、ユーザープロフィールに関するフォームです
 * </pre>
 *
 * @package    App
 * @subpackage App_Form
 * @author     $useror: anonymous $
 * @version    SVN: Release: $Id:$
 */
class App_Form_User_Image extends BEAR_Base
{
    /**
     * インジェクト
     *
     */
    public function onInject()
    {
       $this->_form =  array('formName' => 'uploadForm');
    }
    /**
     * ユーザーアイコンアップロードフォーム
     *
     * @param array $auth
     */
    public function build($user)
    {
        $form = BEAR::dependency('BEAR_Form', $this->_form);
        $path = _BEAR_APP_HOME . '/tmp/upload';
        $imgFile = ($user['user']['image']) ? '/image/user/icon/' . $user['user']['image'] . '.gif' : '/image/user/icon/default.png';
        if (file_exists(_BEAR_APP_HOME . '/htdocs/' . $imgFile)) {
            $form->addElement('static', 'user_icon', array('',
                '<img src="' . $imgFile . '">'));
        }
        $form->addElement('hidden', 'path', $path);
        $file = & $form->addElement('file', 'filename', array('File:',
            '画像は700KB以下でなくてはいけません。<br/>対応フォーマットはGIF、JPEG、PNGです。'));
        //        $form->addFormRule(array('App_Form_User_Image', 'ruleUpload'));
        $form->addRule('filename', 'アップロードするファイルを選んでください', 'uploadedfile');
        $form->addElement('submit', '_submit', 'アップロード');
    }

    /**
     * ルールアップロード
     *
     * @param array $submit
     *
     * @return bool
     */
    public static function ruleUpload(array $submit)
    {
        $upload = new HTTP_Upload("en");
        $file = $upload->getFiles("filename");
        $ext = $file->upload['ext'];
        $auth = App_Auth::get();
        $id = $auth['id'];
        $filename = md5("icon-original-{$id}") . ".{$ext}";
        $file->setValidExtensions(array('gif', 'jpeg', 'jpg', 'png'), 'accept');
        $file->setValidExtensions(array('exe', 'zip', 'rar'), 'deny');
        $file->setName($filename);
        $moveTo = _BEAR_APP_HOME . "/htdocs/image/user/icon/";
        $isValid = $file->isValid();
        BEAR_Log::appLog("Upload Validation", $isValid);
        if ($isValid) {
            $result = $file->moveTo($moveTo);
            if (PEAR::isError($result)) {
                throw $this->_exception('ファイル移動失敗', BEAR::CODE_ERROR, array(
                    'file' => $_FILES,
                    'moveTo' => $moveTo));
            } else {
                return true;
            }
        } else {
            return array('filename' => $file->getMessage());
        }
    }
}